part of '../controller.dart';

const _kTransactionHistoryItemPurchaseItemDtoKey = 'purchase_item';
const _kTransactionHistoryItemAmountKey = 'amount';
const _kTransactionHistoryItemTransactionTimeKey = 'transaction_time';

class _TransactionHistoryItemDto extends Equatable {
  const _TransactionHistoryItemDto._internal({
    required this.purchaseItemDto,
    required this.amountDto,
    required this.transactionTimeDto,
  });

  final ApiWebPurchaseItemDto purchaseItemDto;
  final ApiMoneyAmountDto amountDto;
  final ApiTimeDto transactionTimeDto;

  @override
  List<Object?> get props {
    return [
      purchaseItemDto,
      amountDto,
      transactionTimeDto,
    ];
  }

  factory _TransactionHistoryItemDto.fromEntity(WebTransactionHistoryItem paymentHistoryItem) {
    final amountDto = ApiMoneyAmountDto.fromApiMoneyAmount(paymentHistoryItem.amount);
    final paymentTimeDto = ApiTimeDto.fromEntity(paymentHistoryItem.transactionTime);
    final purchaseItemDto =
        ApiWebPurchaseItemDtoFactory().fromEntity(paymentHistoryItem.purchaseItem);

    return _TransactionHistoryItemDto._internal(
      purchaseItemDto: purchaseItemDto,
      amountDto: amountDto,
      transactionTimeDto: paymentTimeDto,
    );
  }

  Map<String, dynamic> toJson() {
    return {
      _kTransactionHistoryItemPurchaseItemDtoKey: purchaseItemDto.toJson(),
      _kTransactionHistoryItemAmountKey: amountDto.toJson(),
      _kTransactionHistoryItemTransactionTimeKey: transactionTimeDto.toString(),
    };
  }
}
